package com.violet.uaa.server.auth.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @Author: wqf
 * @Date: 2024/08/31
 * @Description:
 */
@Data
public class MenuDTO implements Serializable {
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "主键id")
    private Long id;

    /**
     * 菜单名称
     */
    @TableField(value = "`name`")
    @Schema(description = "菜单名称")
    private String name;

    /**
     * 父级菜单id
     */
    @TableField(value = "parent_id")
    @Schema(description = "父级菜单id")
    private Integer parentId;

    /**
     * 菜单类型 0-目录 1-菜单 2-按钮
     */
    @TableField(value = "`type`")
    @Schema(description = "菜单类型 0-目录 1-菜单 2-按钮")
    private Integer type;

    /**
     * 菜单顺序
     */
    @TableField(value = "`sequence`")
    @Schema(description = "菜单顺序")
    private Integer sequence;

    /**
     * 菜单图标
     */
    @TableField(value = "icon")
    @Schema(description = "菜单图标")
    private String icon;

    /**
     * 菜单路径
     */
    @TableField(value = "`path`")
    @Schema(description = "菜单路径")
    private String path;

    /**
     * 是否隐藏 0-显示 1-隐藏
     */
    @TableField(value = "hidden")
    @Schema(description = "是否隐藏 0-显示 1-隐藏")
    private Integer hidden;

    /**
     * 重定向地址
     */
    @TableField(value = "redirect")
    @Schema(description = "重定向地址")
    private String redirect;

    /**
     * 组件路径
     */
    @TableField(value = "component")
    @Schema(description = "组件路径")
    private String component;

    /**
     * 是否总是显示 0-否 1-是
     */
    @TableField(value = "always_show")
    @Schema(description = "是否总是显示 0-否 1-是")
    private Integer alwaysShow;

    /**
     * meta 属性
     */
    @TableField(value = "meta")
    @Schema(description = "meta 属性")
    private String meta;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    @TableField(value = "create_by")
    @Schema(description = "创建人")
    private String createBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 更新人
     */
    @TableField(value = "update_by")
    @Schema(description = "更新人")
    private String updateBy;

    /**
     * 0-未删除 1-已删除
     */
    @TableField(value = "deleted")
    @Schema(description = "0-未删除 1-已删除")
    private Integer deleted;
}
